package com.ikas.ai.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Token中的信息
 *
 * @author ly
 */
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface FromToken {
    /**
     * 获取用户信息
     */
    User user() default User.NAME;

    /**
     * 必须
     */
    boolean required() default false;

    /**
     * Token来源 - ip获取不生效
     */
    Source source() default Source.COOKIE;

    /**
     * 用户信息
     */
    enum User {
        /**
         * 用户信息
         */
        INFO,
        /**
         * 用户ID
         */
        ID,
        /**
         * 用户名
         */
        NAME,
        /**
         * 用户IP
         */
        IP,
        /**
         * 用户Token
         */
        TOKEN,
    }

    /**
     * 用户信息
     */
    enum Source {
        /**
         * 用户信息
         */
        URL,
        /**
         * 用户ID
         */
        COOKIE,
        /**
         * 用户名
         */
        HEAD,
    }
}